package ar.com.larreta.colegio.client.responsables;

import java.util.ArrayList;

import ar.com.larreta.colegio.client.CamposColegioConst;
import ar.com.larreta.colegio.client.pagos.VentanaSeleccionDeDeudas;
import ar.com.larreta.colegio.intercambio.client.Alumno;
import ar.com.larreta.colegio.intercambio.client.ListaDeAlumnos;
import ar.com.larreta.colegio.intercambio.client.Responsable;
import ar.com.larreta.grilla.client.Grilla;
import ar.com.larreta.grilla.client.SectorConGrilla;
import ar.com.larreta.grilla.client.ventanas.VentanaConGrilla;
import ar.com.larreta.vista.client.CamposConst;
import ar.com.larreta.vista.client.DialogInfo;
import ar.com.larreta.vista.client.Mensajes;

import com.extjs.gxt.ui.client.event.MenuEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.filters.StringFilter;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;

public class SectorAlumnos extends SectorConGrilla {

	private static final String LISTA = "listaAlumnos";
	
	public static final Integer ANCHO = 500;
	public static final Integer LARGO_DATOS = 137;
	public static final Integer LARGO_GRILLA = LARGO_DATOS - 50;
	
	private MenuItem verDeudas;
	private VentanaConGrilla ventanaConGrilla;
	
	public SectorAlumnos(VentanaConGrilla ventanaConGrilla, String title, Boolean cargar) {
		this.ventanaConGrilla = ventanaConGrilla;
		setHeading(title);
		
		ListaDeAlumnos pedido = null;
		if (cargar){
			pedido = new ListaDeAlumnos();
		}
		
		grilla = new Grilla(pedido, getConfiguracionColumnas(), LISTA);
		add(grilla);
		
		setSize((ANCHO) - 15 , LARGO_DATOS);
		
		grilla.setSize((ANCHO) - 40 , LARGO_GRILLA);
		grilla.setTamanioPagina(3);

		grilla.habilitarComoDestinoDeArrastrarYSoltar();
		grilla.habilitarComoOrigenDeArrastrarYSoltar();
		
		if (cargar) {
			grilla.agregarFiltro(new StringFilter(CamposConst.NOMBRE));
			grilla.agregarFiltro(new StringFilter(CamposConst.APELLIDO));
			grilla.agregarFiltro(new StringFilter(CamposColegioConst.NIVEL));
			grilla.agregarFiltro(new StringFilter(CamposColegioConst.ANIO));
			grilla.agregarFiltro(new StringFilter(CamposColegioConst.DIVISION));
		} else {
			final VentanaConGrilla ventana = ventanaConGrilla;
			grilla.setContextMenu(new Menu());
			verDeudas = new MenuItem(Mensajes.getInstancia().get("msg.colegio.verdeudas"), new SelectionListener<MenuEvent>() {
				@Override
				public void componentSelected(MenuEvent ce) {
					if ((ventana.getGrilla().getSelectionModel().getSelection()!=null) &&
							(!ventana.getGrilla().getSelectionModel().getSelection().isEmpty())){
						new VentanaSeleccionDeDeudas((Alumno) grilla.getSelectionModel().getSelection().get(0),
								(Responsable)ventana.getGrilla().getSelectionModel().getSelection().get(0));
					} else {
						DialogInfo.mostrar("No selecciono responsable", "En modo creacion no pueden realizarse pagos. Debe seleccionar un responsable de la grilla.");
					}
				}
			});
			grilla.getContextMenu().add(verDeudas);
		}
		
		add(grilla.getToolBar());
		
		
	}
	

	@Override
	public ColumnModel getConfiguracionColumnas() {
		ColumnConfig columnNombre = new ColumnConfig(CamposConst.NOMBRE, Mensajes.getInstancia().get("msg.colegio.nombre"), 158);
		ColumnConfig columnApellido = new ColumnConfig(CamposConst.APELLIDO, Mensajes.getInstancia().get("msg.colegio.apellido"), 158);
		ColumnConfig columnNivel = new ColumnConfig(CamposColegioConst.NIVEL, Mensajes.getInstancia().get("msg.colegio.nivel"), 70);
		ColumnConfig columnAnio = new ColumnConfig(CamposColegioConst.ANIO, Mensajes.getInstancia().get("msg.colegio.anio"), 35);
		ColumnConfig columnDivision = new ColumnConfig(CamposColegioConst.DIVISION, Mensajes.getInstancia().get("msg.colegio.division"), 35);
		
		ArrayList<ColumnConfig> columnConfigs = new ArrayList<ColumnConfig>();
		columnConfigs.add(columnNombre);
		columnConfigs.add(columnApellido);
		columnConfigs.add(columnNivel);
		columnConfigs.add(columnAnio);
		columnConfigs.add(columnDivision);

		return new ColumnModel(columnConfigs);
	}

	@Override
	public String getNombreLista() {
		return LISTA;
	}


	@Override
	public void botonAgregarSeleccionado() {
	}

}
